C Overview

Table of Contents

Library

Redis

http://redis.io/

Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

zlog

http://hardysimpson.github.com/zlog/

A reliable pure C logging library.

The GNU C Library (glibc)

from sunsite.unc.edu in pub/packages/development/libraries

SGLIB - A Simple Generic Library for C

Judy

http://judy.sourceforge.net/

Judy is a C library that provides a state-of-the-art core technology that implements a sparse dynamic array. Judy arrays are declared simply with a null pointer. A Judy array consumes memory only when it is populated, yet can grow to take advantage of all available memory if desired.

ncures

Books

The C Book, second edition by Mike Banahan, Declan Brady and Mark Doran

Programming in C (3rd Edition) by Stephen Kochan

0672326663.01._PE_PI_SCMZZZZZZZ_.jpg This book by Steve Kochan is absolutely the best book for anyone starting out programming in C. This is an excellent introductory text with frequent examples and good text. This book makes no assumptions about the particular computer system or operating system on which the C language is implemented. This books is written for novices and experienced programmers alike.

Expert C Programming: Deep C Secrets

0131774298.01._PE_PI_SCMZZZZZZZ_.jpg Peter has written one of the greatest books to hit the computer book stands in a long time! This is not your typical C book, but is rather a fun book to read. As I told Peter, most C programming texts are really boring as all they do is describe the functions, give a abstract example and then move onto something different. This book is chock full of real world C stories and folklore, including a story about the C bug that brought down the AT&T network. I found the tongue-in-cheek attitude and real world examples/stories very, very interesting. Run, don’t walk, down to your local store and buy this book. I really really loved this book, and I read most of it in one sitting. There is also a great introduction to C++ for C programmers that will get you started with C++ and Object-Oriented programming. This book is not for beginners, but is a great second book on C.

The Waite Group’s Microsoft C Bible by Nabajyoti Barkakati(DOS)

oop_detail.gif This book is a must for every programmer, especially those who program in the DOS environment. The Bible organizes and simplifies the information contained in Microsoft’s C library. Each function page gives the purpose, syntax, example call, includes, common uses, returns and examples.

C Traps and Pitfalls by Koenig

The C Programming Language, by Kernighan and Ritchie

Ian Hay's recommended book list

GENERAL INTRODUCTION/TUTORIAL:

  1. For real beginners looking for a solid introduction:

C Programming: A Modern Approach. K.N.King. W.W.Norton & Company, 1996. ISBN 0-393-96945-2

  1. For somewhat more experienced users looking for a solid introduction:

The C Programming Language, 2nd Ed. Kernigan & Ritchie. Prentice Hall, 1988. ISBN 0-13-110362-8

  1. Other recommended introductory books:

C: How to Program, 2nd Ed. Deitel, H.M. & Deitel, P.J. Prentice Hall, 1994. ISBN: 0-13-226119-7

REFERENCES:

C : A Reference Manual, 4th Ed. Harbison & Steele. Prentice Hall, 1995. ISBN 0-13-326224-3

The Standard C Library. P.J.Plauger. Prentice Hall, 1992. ISBN 0-13-131509-9

C Programming FAQs Steve Summit Addison-Wesley, 1996. ISBN 0-201-84519-9

ADVANCED TOPICS / FUTHER EXPLORATION:

C Traps and Pitfalls. Andrew Koenig. Addison-Wesley, 1989. ISBN 0-201-17928-8

Expert C Programming: Deep C Secrets Peter Van Der Linden Prentice Hall, 1994. ISBN 0-13-177429-8

Practical C Programming. Steve Oualline. O'Reilly & Associates, 1993. ISBN 1-56592-035-X

Problem Solving And Program Design In C, 2nd Ed. Hanly & Koffman. Addison-Wesley, 1996. ISBN 0-201-59063-8

Algorithms in C, 3rd Ed. Robert Sedgewick Addison-Wesley, 1998. ISBN 0-201-31452-5

Homepage

Steve Summit's home page

comp.lang.c Frequently Asked Questions

clc-wiki

http://clc-wiki.net/

a wiki operating as an offshoot of the comp.lang.c Usenet group. Its aim is to document the C programming language, the comp.lang.c newsgroup and to provide resources related to both.

Literature and links on C1

my personal best-of list

  1. C - A Reference Manual (Harbison/Steele, Prentice Hall) is simply the best. The longer you have it the more you need it. A must-have!
  2. C - A Software Engineering Approach (Darnell/Margolis, Springer) is an excellent teaching book. It presents not only the C programming language, but also typical procedures, style elements and programming techniques in a quite readable way.
  3. Expert C Programming - Deep C Secrets (P. van der Linden, Prentice Hall) is both a very competent book on C and something just fun reading. Contains numerous tips and tricks as well as anecdotes on C and programming in general. I love it.
  4. The GNU C Library Reference Manual (S. Loosemore, R. Stallman, R. McGrath, A. Oram, U. Drepper, available free in the internet as hypertext document) is one of the basic sources for people who program a lot on Unix-based systems. Though being a reference manual in the first place it also provides good explanations and introductions on the different of the GNU C library.
  5. Programmieren mit C (Martin Lowes, Augustin Paulik, Teubner Verlag) is a good book for learning concentrating on ANSI-C. It also covers some typical applications like binary trees.

Don't buy these, my personal Hall of Shame

  1. The Annotated ANSI-C Standard (and anything else by Herbert Schildt, Osborne) may be the cheapest way to get hold of a printed copy of the ANSI-C standard, but never read his comments! That's what not only the [alt.comp.lang.learn.c-c++] - FAQ list recommends. Like stated by Peter Seebach in comp.lang.c Schildt has been the founding idea to many a good drinking game. He is said to have a clear style that leaves the reader confident but dangerously ignorant. For more information don't hesitate to read some of the following:
    • Clive Feather's review on Schildt's errors.
    • Peter Seebach's C: The Complete Nonsense contains some more incredible examples of Schildt's expertise.
    • Peter Seebach's April Fool's posting, declaring to pass on the moderation of comp.lang.c.moderated to Herbert Schildt.
  2. C-Programmierung lernen (Andre Willms, Addison-Wesley, in German language) is a book for the novice constantly using incorrect (in the ANSI sense) code but still stating one needed to use an ANSI-C compiler to try his code examples - haha!
  3. GoTo C-Programmierung (Guido Krüger, Addison-Wesley, in German language) is for the advanced novice and devastates the C language in a similar manner. Apart from using void main() all the time the book contains numerous survivors from the old K&R-times as well as descriptions of library functions that are plainly wrong when speaking of ANSI-C. My advice: better buy two books that have less than half as many pages but do exactly what they're supposed to do.
  4. Effektiv Programmieren in C und C++ (Dietmar Herrmann, Vieweg Verlag) is another void main() publication that even goes further by adding a return statement to the end of main(). I still say: A book supporting this rubbish cannot be recommended no matter how good it might be in some other way.

Documents on this server

  • Can't Happen or * NOTREACHED * or Real Programs Dump Core

    http://herbert.the-little-red-haired-girl.org/dvi/ps/canthappen.ps

    (alternatively as PDF File) A rather old but still up-to-date document on programming in C. It is based on the Unix environment and many examples mention implementation details from the mid-eighties' Unix world. However the shocking truth is: nothing has really changed since then, we're still making the same mistakes.

  • LCLint User's Guide

    Online

    Download

    LCLint is a tool for statically checking C sources. It is a freely available "advanced lint". The above document covers LCLint as well as some other useful information, like naming conventions etc. HTML online dokument.

  • IOCCC-Archiv

    http://www.ioccc.org/ The International Obfuscated C Contest is already fairly famous (notorious?) - we get plenty of chaos and fun together with brillant programming skills, in other words: a lot to learn from! dürfte vielen

Other people's collections

mathtools.net

http://www.mathtools.net/

Plenty of links to resources on Matlab, C and other programming languages.

FTP

CS

  • ftp.cs.toronto.edu
  • ftp.cs.washington.edu
  • ftp.cs.umd.edu

18. Tools and Resources2

C development tools

  • a C cross-reference generator cflow, cxref, calls, cscope, xscope, or ixfw
  • a C beautifier/pretty-printer cb, indent, GNU indent, or vgrind
  • a revision control or configuration management tool CVS, RCS, or SCCS
  • a C source obfuscator (shrouder) obfus, shroud, or opqcp
  • a ``make'' dependency generator makedepend, or try cc -M or cpp -M
  • tools to compute code metrics ccount, Metre, lcount, or csize; there is also a package sold by McCabe and Associates
  • a C lines-of-source counter this can be done very crudely with the standard Unix utility wc, and somewhat better with grep -c ";"
  • a C declaration aid (cdecl) check volume 14 of comp.sources.unix (see question 18.16) and K&R2
  • a prototype generator see question 11.31
  • a tool to track down malloc problems see question 18.2
  • a ``selective'' C preprocessor see question 10.18
  • language translation tools see questions 11.31 and 20.26
  • C verifiers (lint) see question 18.7
  • a C compiler! see question 18.3

track down malloc problems tools

one popular one is Conor P. Cahill's ``dbmalloc'', posted to comp.sources.misc in 1992, volume 32. Others are ``leak'', available in volume 27 of the comp.sources.unix archives; JMalloc.c and JMalloc.h in the ``Snippets'' collection; MEMDEBUG from ftp.crpht.lu in pub/sources/memdebug ; and Electric Fence.

C tutorials

some good code examples to study

The GNU C Library (glibc)

parse and evaluate expressions(packages are ``defunc,'')

available from sunsite.unc.edu in pub/packages/development/libraries/defunc-1.3.tar.Z

ftp://sunsite.unc.edu/pub/packages/development/libraries/

Ian Hay's recommended book list3

GENERAL INTRODUCTION/TUTORIAL:

  1. For real beginners looking for a solid introduction:

C Programming: A Modern Approach. K.N.King. W.W.Norton & Company, 1996. ISBN 0-393-96945-2

  1. For somewhat more experienced users looking for a solid introduction:

The C Programming Language, 2nd Ed. Kernigan & Ritchie. Prentice Hall, 1988. ISBN 0-13-110362-8

  1. Other recommended introductory books:

C: How to Program, 2nd Ed. Deitel, H.M. & Deitel, P.J. Prentice Hall, 1994. ISBN: 0-13-226119-7

REFERENCES:

C : A Reference Manual, 4th Ed. Harbison & Steele. Prentice Hall, 1995. ISBN 0-13-326224-3

The Standard C Library. P.J.Plauger. Prentice Hall, 1992. ISBN 0-13-131509-9

C Programming FAQs Steve Summit Addison-Wesley, 1996. ISBN 0-201-84519-9

ADVANCED TOPICS / FUTHER EXPLORATION:

C Traps and Pitfalls. Andrew Koenig. Addison-Wesley, 1989. ISBN 0-201-17928-8

Expert C Programming: Deep C Secrets Peter Van Der Linden Prentice Hall, 1994. ISBN 0-13-177429-8

Practical C Programming. Steve Oualline. O'Reilly & Associates, 1993. ISBN 1-56592-035-X

Problem Solving And Program Design In C, 2nd Ed. Hanly & Koffman. Addison-Wesley, 1996. ISBN 0-201-59063-8

Algorithms in C, 3rd Ed. Robert Sedgewick Addison-Wesley, 1998. ISBN 0-201-31452-5

code fragments and examples

Bob Stout's popular ``SNIPPETS'' collection is available from ftp.brokersys.com in directory pub/snippets or on the web at http://www.brokersys.com/snippets/.

Lars Wirzenius's ``publib'' library is available from ftp.funet.fi in directory pub/languages/C/Publib/.

Standards and Style

C Style: Standards and Guidelines

http://syque.com/cstyle/preface.htm

针对c的写作风格,分文别类的总结了一些点。可以一读。更好的编程风格进一步阅读《Code complete》

Standards and Style for Coding in ANSI C

Notes on Programming in C by Rob Pike4

The Ten Commandments for C Programmers5

Misc

other resource

Footnotes:

Author: Shi Shougang

Created: 2015-03-05 Thu 23:21

Emacs 24.3.1 (Org mode 8.2.10)

Validate